﻿更新说明：
2022-01-18 (yaya)
  撤销吸收命令行尾部的空格。增加变量：当前水平像素(0x834c)。

2021-10-15 (yaya)
  修复管道符‘|’后面紧接call(或者goto)标签时，必须补空格。issues #341

2021-10-13 (yaya)
  增强菜单项目、项目注释以及菜单字符串的文字颜色功能。例如：
    title boot $[0xff00ff]Windows $[]10x64
  修正 NTFS 有偏移时的写操作错误。
  修正 dd 函数在同一文件向后移动时的错误。
  吸收命令行尾部的空格。
  修正卸载碎片插槽的错误。

2021-05-28 (yaya)
  改进热键。可以把菜单项中的任意英文字母作为热键。
  增加参数：setmenu --hotkey-color=COLOR  设置热键颜色。
  例如：
    setmenu --hotkey-color=0xffff
    hotkey -A [F3] "reboot" [Ctrl+d] "commandline"
    title [F4] Boot Win
    title Boot ^Win 10

2021-05-16 (yaya)
  批处理增加 else 函数。增加 {脚本集} 表示法。
  如：
  if 条件
  {
    脚本集
    if 条件 {
      脚本集 }
    else {
      脚本集 }
  }
  else if 条件
  {
    脚本集
  }
  else
  {
    脚本集
  }
  注意：
  1. 大括弧必须是一行的结尾。
  2. 脚本集可多行书写。
  3. 大括弧内部可以嵌套。

2021-04-28 (yaya)
  改进批处理调试，使用行号作为断点，可使用10个断点。
    debug 批处理文件名 参数
    b  设置断点（10个）。  例如: b 45  (当前批处理, 45行);   b p2,134  (2号批处理, 134行)
    b l  显示断点  (断点号,批处理号,批处理行号)
    b c  清除断点   例如: c2 (清除2号断点);   c (清除全部断点)
    n  运行至断点
    c  进入命令行  按'ESC'键返回批处理调试
    s  跳过本行
    e  运行批处理至结束
    q  退出批处理
    p  单步执行(跨过子程序)
    其他  单步执行(遇到子程序进入)

2019-12-23(chenall)
  1. 支持多行initrd.

2019-12-20(yaya)
  1. 改进 setmenu 字符串功能，增加索引和菜单区域内居中。字符串可以使用背景色。
     setmenu --string[=iINDEX]=[X|s|m]=[-]Y=COLOR="STRING"
  iINDEX 范围是 i0-i15. 如果没有 =iINDEX 索引自动递增。
  如果水平位置是 s 则字符串在全屏居中; 如果水平位置是 m 则字符串在菜单区域内居中。

  2. 动态更新日期时间增加标题，可显示中文。
     例如：“date&time日期时间：  =MMM.dd.yyyy  HH:mm:ss”

2019-10-27(yaya)
  1. 修正 udf 文件系统处理大于 4Gb 文件的错误。(issues #216)
  2. 修正 map 函数碎片映射插槽错误。(issues #212)
  3. 修正 vol 函数不设置新根目录的问题。(issues #214)
  4. 高亮菜单指示器的形状，可通过0x8308处修改。无论有无指示器，都将所选菜单项保存到0x8276。(issues #213)
  5. 改进 color 函数。
  6. 修正 setmenu --string="date&time" 影响倒计时显示的问题。

2019-09-09(yaya)
  1. setmenu 函数增加 --keyhelp-on* --keyhelp-off 参数。
  2. 改进 setmenu --string 负数行设定，不随临时调整字体尺寸而变化。
  3. 修正动画在 checkkey 时不能播放的问题。

2019-08-08(yaya)
  菜单每秒动态更新日期时间。
  1. 指定日期时间格式
  setmenu --string=x=y=color="date&time=FORMAT"
  例如：“date&time=MMM.dd.yyyy  HH:mm:ss”
        “date&time=dd/MMM/yy  hh:mm:ss AP"
  2. 隐含ISO8601标准日期时间格式(yyyy-MM-dd  HH:mm:ss)
  setmenu --string=x=y=color="date&time”
	3. 清除日期时间
  setmenu --string=date&time

2019-07-14(yaya)
  支持位于 2TB 后的分区。

2019-06-13(yaya)
  修正 color 函数。增加 --64bit 参数，用于指定 <=0xff 的值为 64 位颜色。
  支持 15 位每像素图形模式(即5:5:5模式)。

2019-05-07(yaya)
  改进 setkey 命令及帮助，完全支持匈牙利键盘(由 steve 提供)。
  改进 displaymem 及 bootlace 命令。

2019-03-25(yaya)
	修正动态 VHD 不再能够支持的问题。
	条件菜单项目(iftitle )支持图形菜单。
	图形菜单改进：支持背景高亮、支持图文混排。
	
	setmenu --graphic-entry=图形类型=图形菜单行数=图形菜单列数=图形宽=图形高=图形行间隙 图形文件
	图文混排时，图形与文本选中项（高亮项）的设置，是各种独立的，可以单独设置。
	如果高亮只需要通过文本实现，图形类型可设置为0x90.
	图形类型：
	位0：前景高亮    位1：前景色翻转    位2：图形加框    位3：背景高亮   位4：图文混排     位7：背景透明
	图形行间隙在图文混排模式，不能实现随意调整。如果间隙不理想，可以设置图形间隙为零。然后使用增加字符间距实现。（setmenu --font-spacing=0:n）

2018-12-23(yaya)
  修正读磁盘越界不报警。

2018-9-19(yaya)
  替换title字符串变量中的换行符。

2018-8-21(yaya)
  增加 setmenu --auto-num-all-on 参数。
  给所有标题编号。(--auto-num-on 参数仅给引导标题编号)
  注释：0x8274 00/01/02=禁止自动编号/仅给引导标题编号/给所有标题编号
        0x8275 标题编号与标题内容之间的字符。如：0x20=' '   0x2d='-'
        0x8276 返回当前标题编号。(按所有标题计)

2018-7-1(yaya)
  增加 setmenu --triangle-on --triangle-off 参数，打开/关闭菜单三角形指示器。默认打开。

2018-6-29(yaya)
  1. 增加 setmenu --middle-align 参数。菜单项目及菜单项目帮助居中。(issues #179)
  2. 修正光标尺寸，随点阵字符尺寸而变。(issues #180)

2018-6-12(yaya)
  1. 增加 beep 函数，播放音乐。(issues #175)(issues #176)
  beep [--start|--mid|--end] [--play=N] [--nowait] 频率 持续时间 ...
  频率: Hz    持续时间: ms     最大 126 音符.
  N:播放次数 0-255。0是停止播放，255是连续播放（按任何键停止播放）。 
  当音节很多时，可以用不同的行书写。使用 [--start|--mid|--end] 指定.
  例1: 警报
  beep --play=10 400 20 500 20 600 20 700 20 800 20 900 20 1000 20 1100 20 1200 20 1300 20 1400 20 1500 20 1600 20
  例2: 茉莉花
  beep --start 330 440 330 220 392 220 440 220 522 220 522 220 440 220 392 440 393 220 440 220 392 880
  beep --mid 330 440 330 220 392 220 440 220 522 220 522 220 440 220 392 440 392 220 440 220 392 880
  beep --mid 392 440 392 440 392 440 330 220 392 220 440 440 440 440 392 880
  beep --mid 330 440 293 220 330 220 392 440 330 220 293 220 261 440 261 220 293 220 261 880
  beep --mid 330 220 293 220 261 220 330 220 293 660 330 220 392 440 440 220 522 220 392 880
  beep --mid 293 440 330 220 392 220 293 220 330 220 261 220 220 220 196 880 220 440 261 440
  beep --end --play=255 293 660 330 220 261 220 293 220 261 220 220 220 196 1320
  2. 改善图像透明背景的算法。
  3. 修改 grub_memmove 函数，提高运算速度。
  4. 修正 map 函数中碎片映射的错误。

2018-04-23(yaya)
  在菜单项首行增加 !BAT 可按批处理方式书写与执行，使用批处理的功能。比如：goto :label
  书写方式区别在于转义符 % 的使用。
  在原菜单项：
      set a2=%@root:~0,-2%0)
      set srs=%SRS0PE%%srs%
  按批处理方式书写菜单项：
      !BAT
      set a2=%@root:~0,-2%%0)
      set srs=%SRS0PE%%%srs%  
  撤销2018-04-08与2018-02-20修改说明。   

2018-03-26(yaya)
  函数 map 增加 --in-situ=FLAGS_AND_ID 参数。
  低字节是 FLAGS，0/1=清除分区表后3项活动分区标志/清空分区表最后3项，默认0。
  高字节是分区 ID，使用 0xnnnn 指定。

2018-03-24(yaya)
  函数 read 增加 --8 参数，一次读 8 字节。

2018-03-15(yaya)
  增强 setmenu --string 函数功能
  --string=[X]=[-]Y=COLOR="STRING"
  没有X, 表示水平居中.
  -Y表示从菜单底部计数.  -0就是最后一行.

2017-12-05(yaya)
  增强颜色赋值功能。修正color及echo帮助信息。
  1. 按目标分配颜色，顺序不能乱(未选菜单 被选菜单 帮助 标题)。颜色可用占位符n替换。
    例： color black/cyan yellow/cyan red/cyan light-green/cyan    字符颜色/背景颜色，使用符号颜色。
    例： color 0x30 0x3e 0x34 0x3a    高位背景色，低位字符颜色，8位数字。
    例： color 0x888800000000 0x888800ffff00 0x888800880000 0x88880000ff00    64位数字。
    例： color 0x30    其余同NORMAL。在命令行上使用，改变控制台颜色。
    例： color 0x30 0xe n 0xa    背景色取自NORMAL。使用占位符n。
  2. 可以给指定目标赋颜色，NORMAL应当在首位。
    例： color normal=0x888800000000    其余目标颜色同NORMAL。
    例： color normal=0x4444440000ffff helptext=0xc highlight=0xd heading=0xe border=0xa    背景色同NORMAL。
    例： color standard=0xFFFFFF    改变控制台颜色。
  3. 改变字符串的颜色
    例： echo $[0xCD]字符串    改变字符串的颜色(8或64位数字)。C=背景色,D=字符颜色。
    例： echo $[]字符串        字符串使用系统标准颜色。
  4. 具体颜色可在命令行查看。
    例： echo -h-rrggbb
    例： echo -rrggbb

2017-11-28(yaya)
  修正 setmenu 函数，并且增加下列参数：
  1. --draw-box=[索引]=[起始x]=[起始y]=[水平长度]=[垂直长度]=[线宽]=[颜色]
	  划线或画框。其中：索引=1-16；颜色=24色；线宽=1-255；尺寸单位是像素。
	  --draw-box=[索引]  清除指定的线或框。
	  --draw-box=        清除所有的线或框。
	2. --string=  清除所有的字符串。

2017-10-14(yaya)
  修正udf引导代码。
  可启动U盘制作：把 grldr.pbr 的 udf 引导代码(0x1400起始)复制到U盘启动分区，
                 把 MBR 中的分区起始扇区(4字节)复制到启动分区的偏移0xc。

2017-10-05(yaya)
  修正 --in-situ 参数。因嵌套会丢失插槽的 form_Smax，to_Smax。
  增加 --swap-drive=DRIVE1=DRIVE2 参数，用于交换 FROM_DRIVE。

2017-10-04(yaya)
  支持U盘使用udf文件系统。版本至2.01。
  分区：使用 BOOTICE 分区，主引导记录选 Windows NT 6.x MBR。
  格式化U盘：在Windows系统的cmd命令行：format u盘驱动器号: /fs:udf /q

2017-08-30(yaya)
  displaymem 函数增加参数 --s，以 512 字节扇区的单位显示可用 RAM。

2017-08-28(yaya)
  修正 Windows XP 反馈 0K 错误(不点)。(issues #154)
  修正 int15/ax=e820 等函数。

2017-06-21(yaya)
  cat --hex 函数的文本字符，仅显示0x20-0x7e字符。(issues #150)

2017-06-18(yaya)
  修正 cat --hex 丢失显示字符问题.

2017-06-11(yaya)
  修正 exFAT 每簇字节 >=128Kb 时,启动失败。

2017-06-07(yaya)
  增加读写 CD 的 UUID。
  vol 函数增加参数 --primary。ISO 统一采用传统主卷描述符里的卷标(Linux系统)。

2017-05-15(yaya)
  允许批处理文件加载 kernel、initrd，会产生错误。(issue #141)
  修正卷标显示。
  增加32位色转4色模块。

2017-05-12(yaya)
  修正写映射设备有时失败有时成功的问题。
  可以在FAT、NTFS文件系统创建卷标。

2017-05-06(yaya)
  修正批处理文件不能加载 kernel、initrd。
  修正 mem64 不能正常工作。开放 mem64 函数。
  修正卷标显示。

2017-05-05(yaya)
  改进卷标及UUID读写功能。(issue #138)
  vol [--write] [DEVICE] [VOLUME]
	uuid [--write] [DEVICE] [UUID]
  例：vol  显示所有设备的卷标。包括软盘、硬盘、光盘及映像文件。
      vol DEVICE  显示指定设备的卷标。
      vol VOLUME  搜索指定卷标的设备，设置为根设备。
      vol DEVICE VOLUME  验证指定设备的卷标，相同返回真。
      vol --write DEVICE VOLUME  向指定设备写(修改或创建)卷标。
        注意：只能在FAT、NTFS文件系统修改卷标。只能写单字符卷标(如英文)。

2017-04-21(yaya)
  修正内置usb驱动参数。
  usb [--delay=0xMN] --init
  M: 单次传输扇区数。 0: 32扇区(默认); 1: 1扇区。
  N: 指定延迟参数。 默认0, 其他1,2,3,4等。

2017-03-30(yaya)
  显示包含空格的文件或目录时，仍然显示转义符'\'。

2017-03-25（yaya）
  增加 UUID 写功能。
    例：uuid --write-uuid (hd0,3) 1234-5678
  增加卷标读、写功能。目前只能写 BPB 卷标。语法及功能参照 UUID。
    例：读	vol  或者  vol (hd0,3)
        写  vol --write-vol-bpb (hd0,3) "NO NAME"

2017-03-19（yaya）
  列目录时，目录名称高亮显示，有别于普通文件。
  显示包含空格的文件或目录时，不再显示转义符'\'。
  录入包含空格的文件或目录时，可以使用转义符，也可以使用双引号。
  例如：/Program\ Files    或者    /“Program Files”

2017-03-06（yaya）
  USB2.0 驱动更新。
	支持“AMD SB700/SB710/SB750 主板”，支持“神舟q230b网络本”等。
	可以通过参数 delay 微调传输速度。
	感谢网友求道者及gnuxwy提供帮助。

2017-02-04（yaya）
	Ls command: Empty Folder returns false.

2016-12-08（yaya）
  修正lz4、vhd不显示解压缩进度指示。增加lzma解压缩进度指示。

2016-11-09（不点）
  0x8205 bit 5 = 1: 使checkkey闲置循环停止指令。
	
2016-04-13（yaya）
  支持动画菜单
  setmenu --graphic-entry=类型=菜单行数=菜单列数=图形宽(像素)=图形高(像素)=菜单行间距(像素)  菜单项0的路径文件名
  类型： 位0：高亮指定颜色    位1：高亮颜色翻转    位2：高亮显示线框    位7：背景透明(最好使用黑色背景)
  文件名： *n.??? 格式    n=00-99
  高亮颜色由 color HIGHLIGHT=0xrrggbb 指定。
  字符可以使用任意字型、字高、颜色，可以辅以图标。

2016-03-25（yaya）
  菜单字符可以使用不同字型。
  例如："七" 使用不同字型，将 .hex 文件中的 unicode 码 “4e03” 修改为 “0080”，
	      将菜单中的 "七" 修改为 “\X0080”。

2016-03-23（yaya）
  增强 echo 函数功能。
  例如：echo -e \x18    显示 UTF-8 字符 0x18。
        echo -e \X2191  显示 unicode 字符 0x2191。

2016-03-15（yaya）
  1.增加动画控制热键 F2：播放/停止。
  2.增加动画控制位 0x835b，位0：0/1=停止/播放。
  3.增加精简字库模式：--simp=起始0,终止0,...,起始3,终止3
    中文可以使用 --simp= ，内置字库应当包含 DotSize=[font_h],['simp']
    例如：font --font-high=24 --simp= /24_24.hex
          DotSize=24,simp
    不使用热键：	      可以加载 32*32 unifont 全字库
    使用热键：		      可以加载 24*24 unifont 全字库
    使用精简字库：      可以加载 46*46 汉字全字库
    使用精简字库及热键：可以加载 40*40 汉字全字库
  4.不再支持 bin 格式字库。

2016-03-03（yaya）
  1.增加图像背景色设置方法。    splashimage --fill-color=[0xrrggbb]
    作用之一，作为小图像的背景。
    作用之二，直接作为菜单的背景（即不加载图像背景）。此时只设置字体的前景色即可。
  2.增加动画菜单。    splashimage --animated=[type]=[delay]=[last_num]=[x]=[y] START_FILE
    类型[type]：bit 0-3: 播放次数    bit 4: 永远重复    bit 7: 透明背景
                type=00：禁止播放
                播放n次：序列图像各显示n次，时间独占。可作为启动前导、序幕。
                永远重复：序列图像无限循环，时间与菜单共享。可作为菜单里的动画。
                背景透明：即抠像。要求4角像素为背景色。
                          背景色最好为白色或黑色，这样可以去除一些灰色杂波。若是彩色背景，则应当非常干净。
                提醒：请以16进制方式输入。否则易错。
    延迟[delay]：序列图像之间的延迟。单位是滴答，即1/18.2秒。
    序列数[last_num]：序列图像总数（2位数，从1开始计数）。
    偏移[x]、[y]：图像偏移，单位像素。
    起始图像文件 START_FILE 命名规则：*n.???   n: 1-9 或 01-99 或 001-999。
  3.增加固定图像的背景色可以透明。  splashimage [--offset=[type]=[x]=[y]] FILE
    类型[type]：bit 7: 透明背景

2016-02-14（yaya）
  setmenu 函数增加菜单项目背景短/满参数(默认短)

2016-01-19（yaya）
  splashimage 函数增加图像起始偏移（默认0）

2015-08-20（yaya）
  1.支持非 16*16 字体。
    在 font 函数增加参数：
    --hex* --bin 字库输出类型；
    --horiz-scan* --verti-scan 点阵字符扫描模式；
    --h-to-l* --l-to-h 点阵字符在字节的存储方式；
    --font-high=[font_h] 点阵字符的高与宽（应当相等）。
    注：* 是默认项。
    例子：font /my.hex
          font --bin --verti-scan --l-to-h --font-high=20 /2_20.dzk
          font --bin --font-high=20 /1_20.dzk
    内置字库，如果不是 16*16 字体，头部需声明：DotSize=[font_h]。
    受内存限制，当前大字库可支持到 32*32，中文小字库可支持到 40*40.
  2.不再支持 vga 图形模式。

2015-07-07（yaya）
  1.支持每像素16位彩色模式（64K 5:6:5）。
  2.支持 jpg（jpeg，jpe）图像格式。
  3.在 vbe 模式，使用 echo -rrggbb 可以显示 216 种彩色样本。
  4.使用 echo -v 可以显示版本、内存信息。
  5.增加 setmenu 函数，增强图形菜单编辑功能。参数：
    --ver-on --ver-off 版本信息打开/关闭。默认打开；
    --lang=en --lang=zh 按键帮助信息中英文切换。默认英文；
    --auto-num-off --auto-num-on 关闭/打开菜单自动编号。默认关闭；
    --font-spacing=[font]:[line] 设置字符间距/行间距。单位：像素。默认0。应当位于下面的参数之前；
    --string=[x]=[y]=[color]=["string“] 字符串位置、颜色与内容，可用于标题，说明，帮助等。单位：列，行，24位色彩。
      注：如果省略颜色，位于菜单框以上按标题颜色，位于菜单框以下按帮助文本颜色；
          字符串头尾要加英文双引号；
          列数=图像水平像素/(字符宽+字符间距）   字符宽=8；
          行数=图像垂直像素/(字符高+行间距)      字符高=10；
    --box x=[x] y=[y] w=[w] h=[h] l=[l] 项目标题起始列，起始行，每行最大字符数，最大菜单项数，菜单框线条宽度（像素）；
      注：w=0 表示水平居中。此时 w 应当在 x 之后；
          l=0 表示不显示菜单框；
    --help=[x]=[w]=[y] 项目帮助位置。单位：列，行。默认1行；
      注：x=0 由边框确定（默认）；w=0 水平居中；
    --keyhelp=[y_offset]=[color] 按键帮助位置,颜色。单位：列，行，24位色彩。
      注：y_offset=0，项目与按键帮助位于同一区域，项目帮助可以覆盖按键帮助（默认）；
          y_offset !=0，是按键帮助到项目帮助的行偏移，两者共存；
          y_offset<=4，是项目帮助的显示行数；
          color 默认 “color helptext";
    --u 恢复菜单原始状态。
    --timeout=[x]=[y]=[color] 倒计时位置、颜色。单位：列，行，24位色彩。

2015-05-14（yaya）
	改进 NTFS 文件系统：
	对于驻留属性文件（小文件），可以写，也可用 blocklist 显示信息。
	对于非驻留属性列表，取消长度限制。

2015-03-23（yaya）
	内置 usb2.0 可以驱动原生4k扇区磁盘

2014-10-29
	1.(tinybit) Workaround for BIOS of BENQ notebook that only supports 1.

2014-10-15
	1.workaround for issue 204(chenall)

2014-10-12
	1.skip_to()函数修改,对于引号里面的”\”使用以前的方法处理,保持兼容性。(chenall)
	2.add variable @boot,add debug info。(chenall)
	3.two variables boot_drive and install_partition can be preset to a value before transferring control to grub4dos. (tinybit)
	4.修正屏蔽 map 信息。(yaya)

2014-10-09（yaya）
	1.屏蔽 map 信息。 

2014-09-23（yaya）
	1.使用 bootlace.com 安装 grldr.mbr 到 gpt 分区类型的设备。

2014-09-02（yaya）
	1.ext4 分区支持 64 位功能，支持元块组。
	2.grldr头部、grldr.mbr 支持搜索 gpt 分区的 grldr。
	3.修正了 bootlace。

2014-08-17
	1.修正GPT unhide/hide的BUG,现在可以正常对gpt分区进行隐藏.
	2.优化GPT分区查找代码.
	3.允许直接访问GPT保留区,但不在列表中显示.

﻿2014-08-01(不点)
	1.解决了 reboot.pro 报告的分区 ID 为 00 的分区不可被识别出来、无法访问的问题。
	2.解决了 chainloader --raw 不能加载硬盘 BPB hidden sectors=0 的引导扇区的问题。也是英文论坛报告的。
	3.清除 ud 启动后残留信息使后续启动不再被重复识别为 ud 启动（因为后续启动本来就不再是从 ud 启动）。
	（yaya)
	1.使 builtins.c 中的 default_func、geometry_func 代码与 0.4.5c 保持一致。
	2.使 common.c、stage2.c 中的代码与 0.4.5c 保持一致（除 0.4.6a 有意改动的）。

2014-07-9(yaya)
	修正软盘搜索。
	支持 16 插槽映射。

2014-06-23(yaya)
	1.完善了有碎片的文件仿真。最多 32 段碎片。若全部采用新版，则可传递碎片信息。
	2.ntfs 文件系统支持 8Kb 以内的非常驻属性列表。
	3.修正了 udf 格式光盘驱动 bug。
	4.修正了 iso9600_Joliet 文件格式转义符显示问题。

2014-01-16(yaya)
	1.当 FDD 模式的 u 盘（有 BPB，没有分区表）被 BIOS 分配驱动器号 0x80 时，映射为 0x00，
	  同时屏蔽驱动器号 0x80（避免通过 BIOS 读 u 盘，有可能死机）。
    	这一更改也避免了 Issue 162 读 64 位逻辑扇区的问题。
    	FDD 模式的 u 盘被识别为硬盘，问题多多。已经发现的问题是执行 find，不返回 (hd0)；精简 PE 加载映像文件死机。
	2.解决了FDD 模式的 u 盘，执行 find 时返回 (fd0,n) 的问题。
	3.修正了 menu.lst 中 0PE.ISO 的默认位置。
	4.usb2.0 驱动通过菜单或命令行，使用 usb --init 加载。
	5.usb2.0 驱动增加了对集线器（HUB）的支持。若加载失败，可重启试一试。  
	6.读多扇区失败时，会给出提示：拔出 u 盘然后再插入，按任意键继续。此时会重新初始化 u 盘，
	  并采用每次读 1 扇区方式从失败处继续。
	7.增强文件名识别，便于重命名。
	7.1 文件名可以任意大小写，但是在 grldr.mbr 及 grldr.pbr 中必须大写。
	7.2 在 grldr.pbr 中：
		FAT16、FAT32 分区使用 8.3 格式；
		ext2、exFAT、NTFS 分区使用 12 字符。
	7.3 在 grldr.mbr 中：使用 12 字符。
        7.4 为了兼容各类分区，建议文件名不要大于 8 字符，后缀不要大于 3 字符。若有分隔符“.”，不可省略。

2014-04-01(yaya)
	1.更该了 usb2.0 驱动设备枚举。完善了驱动器号识别。直接从当前位置运行，缓存移到 0x80000。驻留内存精简到 4 Kb。
	2.支持有碎片的文件仿真，最多 8 个片段。占用 11Kb - 13Kb 内存（由是否加载光驱确定）。
	3.支持 WinXP 系统的短文件名小写。根据短文件名偏移 0x0c 处：位 3=1 表示文件名小写，位 4=1 表示文件扩展名小写。
	4.可以正确识别 mkisofs 2.00/2.01 生成有 bug 的 Joliet 格式光盘。

2013-10-18
	1.新增功能类似CMD的PATHEXT,可以设置默认的扩展名。
	  使用command --set-ext设置，每个扩展名使用";"分隔
	  例子：
	  command --set-ext=.g4b;.g4e
	  执行时可以不用输入扩展名，比如输入test如果当前路径下有一个test.g4b就会自动使用。
2013-10-17
	1.修改代码支持新版HOTKEY。
	  
2013-07-10
	1.insmod现在支持长文件名(以前最多11个字符,现在没有限制).
	2.修改一些代码解决,消除编译过程中的"Warning"信息.

2013-06-30
	1.解决当命令行长度过长或批处理的参数过多时导致的内存冲突问题.

2013-03-19
	1.新增连续命令分隔符";;",无阻碍顺序执行.
	例子:
	set a=abcd ;; echo %a% ;; set a=
2013-03-02
	1.解决 Issue 117:	menu border has arrow symbol (bottom right)
	2.让其它显示模式也可以指定菜单框颜色。color border=xx

2012-05-16
	1.取消针对ISO9660文件系统忽略大小写的控制.新的版本强制不区分大小写

2012-03-19
	1.修正批处理CALL嵌套超过13层时会死机的问题。

2012-02-22
	1.stage2/cmdline.c
	  修正使用管道"|"可能产生的内存冲突的问题。
	2.stage2/char_io.c
	  Fixed `more'-like feature issue.
2012-02-10
	1.stage2/builtins.c
	  修正cat --locate=\x22时产生的错误。
	  http://bbs.wuyou.com/viewthread.php?tid=180142&page=240#pid2382770
	2.cmdline.c
	  Do not limit pipe "|" buffer.
	  取消管道"|"缓冲区限制。
2012-02-01
	1./build
		Fixed build script.
	2./stage2/builtins.c
		cat --replace changed (issue 71).
		Supported savedefault +n/-n (issue 70).
	3./stage2/stage2.c
		Memory address 0x8276 for variable current_entryno (issue 70).
	4./stage2/disk_io.c
		enable parttype 00  (http://reboot.pro/16004/page__st__25).
	5./stage2/cmdline.c
		fixed skip_to issue. e.g. cat --locate="abc \"def" (md)0x300+1.

2012-01-17
	1.修复一个由于map --rehook导致的问题。http://bbs.wuyou.com/viewthread.php?tid=180142&page=231#pid2373207
	2.一些小调整。
	3.版本号改为0.4.5c

2011-12-30
	1.添加菜单热键功能接口，可以通过外部命令来增加热键功能
	  Add menu hotkey function interface。

2011-12-26
	1.改善菜单自动编号。improve autonumber. 

2011-12-13 
	1.修正grub_sprintf函数%d不能正确显示负数的bug.

2011-12-12  command 'if' added '>=' and '<=', and able to perform numeric comparison.
	1.if命令新增>=和<=比较符。
	  新的if命令支持三种比较>=,==,<=
	  如果两边都是数字，则自动转换成数值型来比较,否则按字符串的ASCII大小比较.

2011-12-11
	1.可以使用map --status=n来获取已经映射磁盘的状态。  use map --status=n to get status of hooked drive n.
	返回以下两个变量信息(return)
	%?%=Start_Sector
	%@retval%=Sector_Count
	如果该磁盘不存在返回0.

2011-12-08
	1.支持菜单自动编号（使用动态菜单时比较有用）。		Support menu AutoNumber.this is useful when used iftitle.
	usage:
	  write 0x8274 0x2001
	  or
	  write 0x8274 0x2D01
	0x20(space) or 0x2d ('-') is the delimiter char in ascii code.
	更多的用法介绍：
	http://bbs.wuyou.com/viewthread.php?tid=180142&page=193#pid2351695

2011-12-06
	1.bug修正。
	2.使用调试模式启动时可以显示条件菜单执行的命令。

2011-12-05
	1.添加条件菜单功能		added iftitle.
	语法: iftitle [<command>] Actual Title displayed\nOptional help line
	只要条件不成立该菜单项目无效。
	eg.如果(hd0,0)上有bootmgr文件才会显示第一个菜单，如果有NTLDR文件才会显示第二个菜单
	
	iftitle [if exist (hd0,0)/bootmgr] Boot to NT6.X from (hd0,0)
	chainloader (hd0,0)/bootmgr
	
	iftitle [if exist (hd0,0)/ntldr] Boot to NT5.X from (hd0,0)
	chainloader (hd0,0)/ntldr
	
2011-12-01
	1.BUG修正。
	  BUG fixed.
	2.添加使用INT18启动功能。
	  Supported boot via INT 18.
	  用法(usage):
	     boot -1
	     or 
	     boot --int18
	3.一些代码精简

2011-11-29
	1.BUG修正。
	2.新的color命令语法。
	  color color_state=color [..]
	其中color_state字符串可以如下。
	 normal		未选中菜单
	 highlight	选中菜单
	 helptext	菜单帮助信息
	 heading	菜单头（GRUB4DOS信息）
	 standard	默认色（控制台）
	 border		菜单边框VBE模式下有效果
	3.新的setcolor/setcolorstate函数
	
2011-11-27
	1.修正fontfile命令在splashimage后面时导至背景图颜色错误的问题.
	2.VGA模式(0x12/0x6a)没有使用splashimage命令时可以指定字体颜色和console模式一样.

2011-11-22
	1.新的COLOR命令允许设置控制台默认字体颜色和背景色(只限于文本模式或VBE模式)
	  方法: 直接使用只带一个参数的color命令即可.
	注: 在命令行或批处理脚本中执行有效.

2011-11-19
	1.cursor_state bit 0=1 show cursor,bit 1=1 show splashimage.
	  use setcursor(n) to change if need,can change from commandline e.g.
	  call Fn.70 0 disable cursor and splashimage.
	2.清理部份无用代码.

2011-11-18
	1.支持BMP背景图片,只限于VBE模式         supported splashimage with BMP format(VBE mode only).
	2.使用BMP图片时,如果非处于VBE模式,则尝试自动匹配图片分辨率.

2011-11-03
	1.修正一个map的bug.                     bug fixed in map_func.
	  相关贴子:
	  http://bbs.wuyou.com/viewthread.php?tid=201887
	  http://bbs.wuyou.com/viewthread.php?tid=201647
	2.忽略ISO9660文件系统上文件名的大小写.   Make name comparisoncase-insensitive on iso9660.
	  可以使用以下命令禁用该功能.            You can use below command to disable this feature.
	  write 0x4CA24 0
	3.cat命令添加--locatei参数,             added --locatei option for cat.
	  查找时忽略大小写                      ignore case locate.
	eg.
	  cat --locatei=Test (md)0x300+1

2011-10-07
	1.新增?_BOOT变量，访问启动GRUB4DOS的Boot_drive
	  add new Variable ?_BOOT to access grub4dos Boot_drive.
	2.为了节省代码GRUB4DOS内部不再处理外部命令WENV的兼容性(WENV tuxw版)
	解决办法如下：
	  如果需要使用该版本WENV则自己在菜单或批处理中添加以下命令
	  write --offset=0x1f8 (md)0x228+1 ?_WENV\0
	3.uuid 命令对于uuid字符的判断不区分大小写。

2011-10-02
	1.取消对fb启动盘的修正,恢复原样.
	2.其它批处理相关代码微调.

2011-09-28
	1.修正访问磁盘分区的BUG(disk_io.c),感谢Yonsm的报告和测试.
	  fixed a bug in disk_io.c
	  http://bbs.wuyou.com/viewthread.php?tid=200520&extra=page%3D1

2011-09-13
	1.修正insmod的一个bug(不能直接insmod默认路径下的文件)
	  fixed a bug in insmod_func.

2011-09-05
	1.insmod支持指定名字,比如insmod fat.gz fat.
	  Support specified name when insmod a module.

2011-09-02
	1.fixed a bug in setloca/endlocal.
2011-08-25
	1.修正cat命令的一个BUG,使用cat --locate-align参数时会出错.
	 fixed a bug in cat_func.
2011-08-23
	1.添加echo/cat命令的帮助信息.(issue: 38,40)
	  add help text for command echo/cat.
	2.修复help --all显示的问题(issue: 39)
	  fixed "help --all" issue.
2011-08-09
	1.批处理call/gotoBUG修复.
	2.新的call可以直接call一个命令.

2011-08-08
	1.一些代码微调.
	2.修正Ctrl+C强制中止批处理脚本,有时会失败的问题(call和&&,||连用时可能会失败)
	3.使用管道符"|"时超过0xC00长度的之符将被丢弃.

2011-08-01
	1.外部命令调用修改,优先使用当前目录下的命令(如果存在的话).
	2.修复在批处理中使用exit命令退出批处理,导致批处理返回值为0的问题.

2011-07-30
	1.批处理执行时允许使用Ctrl+C强制中断运行.

2011-07-19
	1.内置变量?_WENV=?_UUID=?
	  注:1.将来会取消?_UUID,为了保持兼容性,暂时先放一段时间.
	       请使用%?%或%?_WENV%代替%?_UUID%来获取UUID.
	     2.%?%变量可以获取命令返回的字符串信息.
	       目前可用的信息有两个.uuid dev(返回指定设备的UUID字符串),cat --locate= (返回最后一个找到的位置)
	2.@random算法修改.


2011-07-13
	1.在执行cmain之前初始化变量内存空间。

2011-07-12
	1.执行clear命令时同时设置count_lines为0。
	2.内置变量增加@retval，其实就是之前的0x4cb00
	3.增加setlocal @和endlocal @用法。
	  setlocal @可以在批处理中使用,把当前的环境保存起来
	  除非使用endlocal @否则setlocal @之后的设置会一直保留(批处理退出也不影响).
	注：1.在批处理中出现setlocal @则在批处理中setlocal @之前的setlocal命令会全部失效。
	    所以setlocal @有必要的使用的话一般要放在批处理最前面。
	    2.setlocal @后面如果还有出现setlocal，则setlocal之后的设置不会保留.

2011-07-11
	1.添加SETLOCAL和ENDLOCAL命令，和WINDOWS下的批处理用法一样。

2011-07-05
	1.尝试解决%~d0,%~f0路径提取的问题，现在%~f0应该可以提取到正确的路径。
	2.解决if命令输出转向失败的问题。
	3.其它代码调整。

2011-05-27
	1.优化PXE_DIR代码。
	2.其它微调。

2011-05-25@176
	1.调整cat命令的查找字符串代码。
	2.修改批处理的调试模式开启方法（改为debug 3才会进入调试模式）
	3.消除一些编译时的警告信息。

2011-05-23@174
	1.修正一个TFTP相对路径的问题，感谢2011exuejiao@wuyou.
	2.在批处理中可以使用debug 3临时开启debug模式。

2011-04-30@159
	1.取消前面版本对批处理参数的调整.恢复到04-16版.
	2.修正一个BUG.(函数print_root_device).
	3.批处理参数新增%~f 文件全路径,%~z文件大小.
	4.现在批处理脚本可以使用使用errorcheck命令控制是否检测错误(默认错误就退出).

2011-04-29@157
	1.find 命令不再查找(hdx)设备.
	2.删除@root变量的前导空格.
	3.ls命令新增dev参数,用于显示设备列表.
	4.批处理代码调整,对于(bd)设备%~d0会使用实际的设备.

2011-04-25@156
	1.新增两个内置变量@root,@path.
	  @root 当前的root.
	  @path 当前默认外部命令查找路径.
	2.修正一个可能导致程序出错的问题.(使用到了临时变量的内存).
	3.批处理代码功能增强.

2011-04-16@153
	1.md5crypt 支持参数。后面直接跟一个字符串会直接计算这个字符串的md5。
	2.菜单支持以变量开头的命令。

2011-03-30@151
	1.LZMA格式解压时暂时禁止显示进度（因为显示进度时解压大文件会失败）。
	2.添加内置变量?_UUID（使用uuid命令可以把获取到的磁盘uuid保存到变量中）.

2011-03-29@150
	1.insmod *.mod添加了检测模块文件头是否为GRUBEXEC签名.
	注：目前还是兼容旧版本的MOD模块，一段时间后会取消，请使用新的MAKEMOD重新制作模块。

	2.对批处理路径和文件名的空格进行自动处理。空格前面自动加转义符"\"
	注：使用p,n,x参数时有效。即%~1时不会处理，但%~p1时会处理。
	
2011-03-26@150
	1.使用kernel (rd)+1启动时,默认的启动设备改为当前root.

2011-03-25@149
	1.修改cat命令替换时显示的信息
	cat --locate=S -replace=R 除非debug on否则不显示信息.
	2.批处理参数新增%*代表所有参数%1 %2 %3 ....

2011-03-24
	1.set /p功能增强(可能会和之前的版本不兼容),新增参数set /p:N
	主要变动:
		1).如果未输入不会清除原来的变量.(之前的版本会清除).
		2).新增支持默认时间没有输入自动退出.
		   set /p:N variable=prompt
		如果在N秒之内没有任何输入,则返回,并且不改变variable的值.
		   
2011-03-23
	1.为了方便使用,修改shift命令为内部命令.并且shift支持参数
	shift n 或 shift /n
	具体用法,可以参考CMD/linux下的shift命令帮助.

2011-02-19
	1.修复kernel加载grub2 loader的问题.
	  fixed a bug when load multiboot-image(boot.c).
	2.现在可以运行16位程序，和wee的机制一样（直接移植了wee里面的代码）
	
2011-02-15
	1.添加realmode_run函数
	2.修改GPT分区检测代码，更加严格的检测。

2011-02-12
	1.增加GPT分区检测，检测不通过就使用MBR分区。
	2.一些代码微调。

2011-02-10
	1.清理UTF8转换UNICODE的代码,不再需要(请同时更新UNIFONT).
	2.修复变量字符串截取BUG.Fixed Bug in envi_cmd func.(thanks sratlf@wuyou report).
	http://bbs.wuyou.com/viewthread.php?tid=180142&page=52#pid2154655

	注意:从2011-02-10开始,必须使用最新版的UNIFONT才可以正常显示UNICODE字符.

	Note: You must also update unifont to the latest version.new unifont can show unicode char anywhere.
	Download the latest version of unifont:
	    http://code.google.com/p/grubutils/downloads/list

2011-01-28
	1.支持读取GPT分区表。
	  为了区别MBR分区表和方便编程，所有的GPT分区类型全部使用0xEE表示。

	2.修正一个bug,现在可以访问大于1T的硬盘.但还不能访问超过2T的内容。

2011-01-26
	1.修复run_line的一个BUG，会导致返回值为假。
	2.添加IF/SET命令的帮助信息。
	3.IF命令增加以下语法,判读一个变量或文件是否存在。
	  if exist variable|filename command.
	4.控制pause的输出，debug小于0时不显示倒计时。debug小于1时不显示按键码.

2011-01-22
	1.set /A 参数使用16进制数保存变量,set /a 十进制数保存变量。
	2.修复goto的一个bug.
	3.修复重定向操作符的bug.

2011-01-19
	1.set命令不再接受回车换行符。
	2.修复获取批处理参数bug.
	3.修复fb文件系统bug（可能会导致访问文件出错）。

2011-01-14
	1.set命令增强.添加了/l,/u参数
	set /l a=Abcd
	把Abcd转为小写./u是转换大写。

2011-01-13
	1.修复utf8菜单编码自动检测的BUG。

2011-01-10
	1.修复SET命令的bug，添加/p参数
	2.修复启动linux时内存冲突的bug.

2011-01-09
	1.菜单支持变量。
	2.支持变量截取(和CMD的方法一样),不支持替换。

2011-01-08
	1.重写grub_sprintf函数，支持简易的宽度和精度控制符(m.n或*.*)。
	
﻿2011-01-07
	1.SET命令添加一个参数/a可以把=后面的计算结果赋值给变量.
	2.新的safe_parse_maxint函数支持一元运算符。"~!-"

2011-01-06
	1.修改CAT命令的显示。现在的cat /filen.ext碰到字符结束符'\0'就停止。
	2.批处理内部添加一个命令shift（只能在批处理中使用）.
	3.skip_to函数现在会可以跳过(‘\r’和‘\n’)。
	4.set *将清除所有变量。

2011-01-05
	1.修正run_line的一个逻辑错误。
	2.外部命令command默认的目录改为(bd)/BOOT/GRUB/
2011-01-03
	1.pager命令即实生效。
	2.添加简易的if判断命令类似的MSDOS.目前支持的判断如下：
	  added a new command if.
	if [/I] [NOT] STRING1==STRING2 [COMMAND]
	注：判断符号==前后不允许有空格或制表符否则比较会失败。
	2.添加SET命令可以设置、修改、删除变量。
	  added a new command set to modify the variable.
	3.从现在开始支持变量。用法和MS-DOS一样。
	  From now supports variable.
	注：使用了和WENV同样的方案。所以这个功能可以看成是简化版的WENV

2011-01-02
	1.pause命令添加一个参数--test-key，可以显示按键扫描码。
	  added --test-key option for pause to display the key scan code.
	2.grub_sprintf函数支持字符串精度控制符。
	  

2011-01-01
	1.修复find命令的bug。当然使用条件查询时可能会出错。
	2.批处理参数修改,为了方便使用，%9改成剩余的所有参数。
	比如参数: 1 2 3 4 5 6 7 8 9 0 a b c
	那%9就是9 0 a b c.

2010-12-31
	1.pause命令增强，增加了显示按键扫描码的功能。需要debug 为-1.
	例子：显示一个按键扫描码
	debug -1 && pause && debug 1
	注：此功能已为被参数--test-key代替。

	2.hiddenmenu命令增强。增加一个--chkpass参数
		功能：	在隐藏菜单的时候按Esc键要输入正确的密码才可以显示菜单。
		注意：	1.该功能启用之后，如果按了其它按键则直接启动默认菜单。
			  默认的Esc按键可以自由设置。使用--chkpass=KEY
			2.菜单初始化有password命令时才需要输入密码。
			3.按键代码如果不清楚可以使用上面的功能来获取。
	例子：	hiddenmenu --chkpass=0x8500	按F11键才可以显示菜单。
		hiddenmenu --chkpass	 	按Esc键才可以显示菜单。
		hiddenmenu --chkpass=0x2200	按Alt+G显示菜单。

2010-12-28
	1.一些BUG修复.
	2.PAUSE命令增加倒计时显示.
	3.fsys_fb.sys代码微调.

2010-12-25
	1.现在delmod也是一个内部命令.
	2.重写insmod/delmod相关的代码.把加载的模块固定在内存18MB开始的位置.

2010-12-21
	1.从command_func中分离出insmod作为一个内部命令存在.
	现在允许insmod加载一个命令合集.(扩展名.mod)
	例子:
	insmod grub4dos.mod
	这个命令合集使用MAKEMOD程序生成.

2010-12-18
	1.代码调整.
	cat添加一个参数--number=N 在查找替换的时候指定查找次数.
2010-12-17
	1.fixed a bug in checkrange_func.

2010-12-16
	1.修正使用批处理运行时可能会出现ERROR 25的错误.
	2.重写批处理运行函数.

2010-12-15
	1.还原2010-12-10对0000:82A4的改变.
	2.为了方便使用当使用fbinst启动时有如下调整
          boot_drive (bd) 为FB_DRIVE(ud)
	  默认root(saved_drive) 为可见分区.
	3.为了减小压缩包的大小,改成用7z压缩发布.

2010-12-14
	1.完善对ud(fbinst创建的分区)支持.现在不需要从fbinst启动也可以随意访问fbinst创建的分区.
	2.允许在批处理中执行的外部命令调用goto/call标签.

2010-12-12
	1.批处理添加exit命令.直接退出批处理.如果后面有数值则设置为errnum.
	如exit 1,退出,并返回一个错误的值.
	2.一些代码优化调整.
	3.修改pause命令,现在的pause直接返回按键的ascii码值.

2010-12-11
	1.完善批处理脚本参数的支持(同CMD下的批处理用法一样).
	2.可以在菜单中使用goto命令(即跳到某个菜单项目).
	3.delmod 添加参数-l用于显示已经加载的模块.如果-l后面还有参数则是判断该模块是否加载.

2010-12-10
	1.改变了以下内存地址的定义(和之前的版本相反)
		0000:82A4	4 (DWORD)	no_decompression (no auto gunzip)
		改成了
		0000:82A4	4 (DWORD)	do_decompression (do auto gunzip)
	2.0x8284的值的bit2如果为1则显示解压进度,否则不显示,默认不显示.
	3.完善了goto/call的功能

2010-12-09
	1.批处理脚本支持标签(类拟BAT批处理).
	support goto/call and :label in batch script.
	CALL :label arguments
	goto label

2010-12-07
	1.添加两个命令用于加载外部命令到内存中,加快运行速度.
	insmod  path-to-program
	delmod program

2010-12-06
	1.批处理脚本支持参数%0 - %9同cmd批处理用法一样。%~n 可以去掉前后的引号

2010-11-24
	1.修正一个skip_to函数的bug。
	fixed a bug in skip_to func,thanks tuxw.

2010-11-21
	1.解决在(ud)上使用自动补全功能问题.
	http://bbs.znpc.net/viewthread.php?tid=5976

2010-11-19 supported pxe_dir list.
	1.添加PXE(pd)文件列表的支持.TFTP ROOT 上的每个目录下都需要有dir.txt才支持.
	可以使用以下命令生成dir.txt文件
	for /r %i in (.) do (dir /a/b %i >%i\dir.txt)

2010-11-18
	1.Fixed a bug in batch file,thanks Mr.zhaohj.
	http://bbs.wuyou.com/viewthread.php?tid=180142&page=9#pid2087407
	2.Add a new variable at 0000:8278 for grub4dos version by date.
	e.g. read 0x8278 return 0x132B7FE  (20101118)
	3.Fixed a bug in find_func,thanks Mr.pseudo.
2010-11-17
	1.重写command_func函数大部份代码。
	  为了方便外命命令的编写，修改主函数调用为以下格式。
	int main (char *arg, int flags)
	新的版本可以直接使用arg和flags参数，不需要再进行计算了。
	
2010-11-16
	1.改进malloc/free函数。
	2.允许执行多个外部命令（之前只允许一个），现在可以在外部命令里面调用其它外部命令。
	外部命令调用方法使用builtin_cmd函数：builtin_cmd(char *cmd,char *arg,chat *flags);
	builtin_cmd(NULL,Command and parameters,flags);

2010-11-15
	1.内置echo命令自动回车符改为"\r\n"
	2.添加malloc/free函数.

2010-11-04
	1.重写run_line（执行一行命令函数）。
	  支持操作符连用。例:
	　echo a | echo b | echo c | echo
	  echo abcd > (md)0x300+1 && echo def
	2.支持新的操作符">>"和">"一样，但这个会附加(附加在输出文件中的第一个字符串结束符'\0'后面)
	　注：目前这个操作符不会改变文件大小。

	2.内置ECHO函数添加两个参数（默认回车不转义）
	  -n 不自动添加回车符
　　　　　-e 允许转义符
2010-10-28
 	1.some bug fixed.
	2.find支持查找使用cdrom --init生成的光驱(只找第一个)

2010-10-27
	1.修改printf函数,支持显示"%",和C语言的语法一样,使用"%%"来显示一个"%"
	2.重写find的查询代码.
	3.find新增参数--devices=[DEVICES],指定要查找的设备.

	说明:DEVICES可以是以下字符的组合:
	u,p,n,h,c,f -->分别对应 ud,pd,nd,hd,cd,fd,

	例子:--devices=hcf //只查找hd,cd,fd,从hd开始.
	注:优先current root.然后再按上面的顺序.(current root必须在列表中,否则跳过)

	可以使用这个参数来重新设定查找顺序,默认(find order):ud->pd->nd->hd->cd->fd

	4.保留--ignore-cd和--ignore-floppies参数(会自动转换).

2010-10-26
	1.find支持(fdx,y)的格式.
	2.优先查找当前root.
2010-10-03
	1.使用操作符"|"时默认自动添加空格,并解决使用"|"时可能导致死机或重启的问题。

2010-09-30
	1.修正操作符号!失效的问题。
	2.恢复内置菜单的大写MENU.LST为小写（保持兼容性）。
	3.内置echo命令。
	用法：
	  echo [-P:[-]XX[-]YY] MESSAGE
	XX: Line number.
	YY: Column number.
	
	XXYY指定后面MESSAGE要显示的位置。
	XX指定行号，YY指定列号。前导“－”，即倒数.

2010-09-25
	1.修正calc计算的一个逻辑错误。
	2.使用fbinst启动默认root设为ud
	set boot_drive to fb_drive(ud) if boot from fbinst.
	3.添加一个新的命令initscript，只能用于菜单中。
	  initscript用于初始化菜单，每次返回菜单时在显示完菜单后执行。
	  有时候会需要这样的功能，比如执行某个菜单失败后返回菜单时重新执行一次初始化。
	initscript /initscript.g4d
	
2010-09-25
	1.简易计算器调整.如果没有"="则不保存计算结果,但++和--除外.
	例子:
		calc *0x60000 + 4 不保存计算结果,所以内存指向*0x60000的值不会被改变.
		calc *0x60000++   会保存计算结果到*0x60000中.
		calc *0x60000 = 1+2 同上.
	2.如果当前已经是图形模式允许graphicsmode直接切换,而不用经过terminal console中转.
		
2010-09-16
	1.修正一个产生Error 27的错误。

2010-09-06
	1.添加操作符号"|" ">"，输出重定向（有点类似DOS）
	Implemented two syntactic operators "|" and ">".Like Dos Output redirection.
	note: 1.use with "&&" and "||" ,the "|" and ">" must be at last.
              2."|" and ">" can not use at same time.
	例子:
              1. pause abcd | pause efg
               output: efgabcd
              2. pause 0x60000 | read #There is a space after the read.
               run read 0x60000
              3.help > (hd0,0)/help.txt or help > (md)0x3000+2
                help.txt must already exist,grub4dos cann't create file or change file size.
2010-09-05
	1.修改TAB的显示方式，现在使用8个字节对齐显示。

2010-08-10
	1.fixed a bug in disk_io.c,it may return error 25 when set root to a cd drive.
	  修正一个BUG,当设置root为cd设备时可能会提示Error 25的错误.
	2.加快colinux下源码在cofs设备时编译的速度.

2010-06-21
	1.打上支持新版FB的补丁
	来源:http://www.burgloader.com/bbs/index.php?topic=37.30
2010-05-02
	1.PXE启动时首先尝试加载root目录下的menu.lst。
	
2010-04-17
	1.命令行自动完成调整.现在可以直接输入/+TAB显示当前目录下的文件或(hd0,0)/+TAB显示(hd0,0)/下面的文件列表
	以前的版本必需要像以下命令才可以。
		root /+TAB
	2.get_cmdline函数调整，以方便外部命令直接调用。

2010-03-29
	1.外部命令执行过程调整。

	例子:默认path (bd)/grub/
 	     echo abcd  ## 优先使用(bd)/grub/echo 文件，如果没有再找 /echo 文件
	     /echo abcd ## 只查找/echo 文件。
	     (fd0)/echo abcd ## 只找 (fd0)/echo abcd 文件。
	2.find 命令添加一个 --ignore-oem 参数。
	http://code.google.com/p/grub4dos-ireneuszp/

2010-03-10
	1.边框位置自动调整。

2010-03-09
	1.注释掉karyonix 4G GZIP MAP的部份代码。
	2.添加UNIFONT外部命令，可以加载UNIFONT字库。当菜单文件是UTF8格式时可以显示多国语言。
	Support multi-language menu with UNIFONT.
	
2010-03-01
	1.打上了karyonix的4G map 补丁
	http://bbs.znpc.net/viewthread.php?tid=5844
	http://www.boot-land.net/forums/index.php?s=&showtopic=10096&view=findpost&p=91378
	
	2.添加fontfile外部命令.
	3.添加menuset外部命令.

2010-02-09
	1.重写cmp部份代码(注:比较时可能会比较慢,因为只使用了1MB的缓存,之前的版本是完全缓存).
	顺便添加了新参数 --skip= 
	可以指定在比较时跳过几个字节,用于cmp --hex时方便查看差异.
	
2010-02-05
	1.添加calc简单计算器功能.
	calc [*INTEGER=] [*]INTEGER OPERATOR [[*]INTEGER]
	
	具体使用方法参考这里的外部命令calc的用法,是一样的,只是内置了.
	http://www.chenall.com/blog/2010/02/grub4dos_calc.html
	
	
2010-01-13
	修改设置默认可执行文件搜索路径参数为
	--set-path=PATH
	例子
	command --set-path=(bd)/grub/
	
2010-01-09
	1.为command参数添加一个参数--set-root用于设置默认可执行文件的搜索路径。
	add option --set-root for command
	sets a search PATH for executable files,default is (bd)/grub

2009-12-03 g@chenall.cn
	1.修改了cat --hex代码，现在cat --hex会显示ascii>127的字符。
	2.修改了cmp --hex代码，现在cmp --hex后面显示的字符同样可以显示中文。
	  并且添加了颜色控制，不同的地方使用了菜单的高亮色显示。

2009-12-01 g@chenall.cn
	1.同步源码到2009-12-01版（修正了NTFS上DD或WRITE的问题）
	2.修改调整了cat --replace，当使用--replace=*addr时允许使用--hex来指定读取长度。具体
	http://bbs.znpc.net/viewthread.php?tid=5784&page=10&fromuid=29#pid42939

2009-11-29 g@chenall.cn
	1.调整了chainloader功能，如果chainloader (rd)+1，并且没有指定edx设备，那将把当前设备设为EDX。
	  Changed chainloader_func,if use chainloader (rd)+1 then will set current_root to EDX
	从光盘上的BOOTMGR启动硬盘上的VISTA/WIN7系统。
 	Boot VISTA/WIN7 from cdrom or any other device
		chainloader (cd)/BOOTMGR
		rootnoverify (hd0,0)
		dd if=(hd0,0)+1 of=(md)0x3E+1
	现在可以直接使用以下方法来启动;	You can now use the following commands..
		map --mem=0xF000 /BOOTMGR
		find --set-root --ignore-cd --ignore-floppies /BOOT/BCD
		chainloader (rd)+1
	http://bbs.znpc.net/viewthread.php?tid=5784&page=7&fromuid=29#pid42684
	Tips:about EDX,please read README_GRUB4DOS.txt
	2.源码同步到官方2009-11-29版。
2009-11-28 g@chenall.cn
    1.修正了当内存>2G时访问可能会出错的问题.
      fixed a bug when access memory>2G problems.
      eg.
      cat --hex (md)0x40002F+1
      map --mem (md)0x600000+0x19020
2009-11-26 g@chenall.cn
	1.修改cmp_func代码，使用之使用十六进制显示差异偏移（为了方便对比使用）。
	  change cmp_func to show Differ at the offset with HEX
	2.为cmp添加了一个参数--hex（直接显示十六进制）
	  add --hex option for cmp	
2009-11-24 g@chenall.cn
	1.添加(bd)设备，即启动设备，注：使用configfile命令会改变启动设备。
	added (bd) support.(bd):the boot drive. note:use configfile to change boot drive
	eg. boot from (hd0,0)
	   now boot drive is (hd0,0)
	   configfile (hd0,1)/menu.lst
	   now boot drive is (hd0,1)